using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._LocationReferencingTools._Configuration
{
    /// <summary>
    /// <para>Configure Utility Network Feature Class</para>
    /// <para>Configures a Utility Network pipeline feature class for use with a linear referencing system (LRS).</para>
    /// <para>配置公共设施网络管线要素类以用于线性参考系统 （LRS）。</para>
    /// </summary>    
    [DisplayName("Configure Utility Network Feature Class")]
    public class ConfigureUtilityNetworkFeatureClass : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ConfigureUtilityNetworkFeatureClass()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_feature_class">
        /// <para>Utility Network Feature Layer</para>
        /// <para>The input Utility Network feature that is also the LRS centerline feature.</para>
        /// <para>输入公共设施网络要素，也是 LRS 中心线要素。</para>
        /// </param>
        /// <param name="_route_id_field">
        /// <para>Route ID Field</para>
        /// <para>The field in the feature class that will be mapped as the LRS Network Route ID.</para>
        /// <para>要素类中将映射为 LRS 网络路径 ID 的字段。</para>
        /// </param>
        /// <param name="_from_measure_field">
        /// <para>From Measure Field</para>
        /// <para>The From measure field of the centerline feature class.</para>
        /// <para>中心线要素类的“从”测量字段。</para>
        /// </param>
        /// <param name="_to_measure_field">
        /// <para>To Measure Field</para>
        /// <para>The To measure field of the centerline feature class.</para>
        /// <para>中心线要素类的“待测量”字段。</para>
        /// </param>
        public ConfigureUtilityNetworkFeatureClass(object _in_feature_class, object _route_id_field, object _from_measure_field, object _to_measure_field)
        {
            this._in_feature_class = _in_feature_class;
            this._route_id_field = _route_id_field;
            this._from_measure_field = _from_measure_field;
            this._to_measure_field = _to_measure_field;
        }
        public override string ToolboxName => "Location Referencing Tools";

        public override string ToolName => "Configure Utility Network Feature Class";

        public override string CallName => "locref.ConfigureUtilityNetworkFeatureClass";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_feature_class, _route_id_field, _from_measure_field, _to_measure_field, _out_feature_class];

        /// <summary>
        /// <para>Utility Network Feature Layer</para>
        /// <para>The input Utility Network feature that is also the LRS centerline feature.</para>
        /// <para>输入公共设施网络要素，也是 LRS 中心线要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Utility Network Feature Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_feature_class { get; set; }


        /// <summary>
        /// <para>Route ID Field</para>
        /// <para>The field in the feature class that will be mapped as the LRS Network Route ID.</para>
        /// <para>要素类中将映射为 LRS 网络路径 ID 的字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route ID Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _route_id_field { get; set; }


        /// <summary>
        /// <para>From Measure Field</para>
        /// <para>The From measure field of the centerline feature class.</para>
        /// <para>中心线要素类的“从”测量字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("From Measure Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _from_measure_field { get; set; }


        /// <summary>
        /// <para>To Measure Field</para>
        /// <para>The To measure field of the centerline feature class.</para>
        /// <para>中心线要素类的“待测量”字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("To Measure Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _to_measure_field { get; set; }


        /// <summary>
        /// <para>Output Feature Class</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_feature_class { get; set; }


        public ConfigureUtilityNetworkFeatureClass SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}